<html>
<head></head>
<body>
<h1>INSTALLATION</h1> 
<h3>Requirements</h3> 
<ol><li>ASP.NET MVC 2 RC </li> 
<li>Visual Studio 2008</li> 
<li>CommonLibrary.NET 0.9.4 Beta 2 ( included ) <a href="http://commonlibrarynet.codeplex.com" class="externalLink">http://commonlibrarynet.codeplex.com<span class="externalLinkIcon"></span></a></li> 
<li>Sql Server 2005 ( optional )</li></ol> 
<br /> 
<h3>Setup - ( Quick Mode )</h3> 
<ol><li>Download source zip file from releases or source code from svn</li> 
<li>Open solution file in studio 2008: &lt;ROOT&gt;\src\apps\CommonLibraryNet.Web.sln</li> 
<li>Run the app in studio</li></ol> 
<br /><b>NOTE:</b><br />This uses In-Memory Repositories for entity persistance for simplicity, and quick testing. See instructions below for setup w/ real repositories against Sql Server<br /><br /> 
<h3>Setup - ( Sql Database )</h3> 
<ol><li>Do steps 1 - 2 in &quot;quick setup&quot; above ( download source &amp; open solution file ).</li> 
<li>Run sql schema install file at <b>&lt;ROOT&gt;\install\_install_models_all.sql</b> ( app will auto create sample data ).</li> 
<li>Run sql schema install file at <b>&lt;ROOT&gt;\install\_install_model_user.sql</b> ( app will auto create sample users ).</li> 
<li>In Global.asax, in method <b>&quot;Configure()&quot;</b> change flag useRealData from false to true. e.g. <b>bool useRealData = true;</b></li> 
<li>Change db connection in <b>&lt;ROOT&gt;\config\dev.config</b> ( Database: connectstr )</li> 
<li>Run the app in studio</li></ol> 
<br /> 
<h3>Accounts</h3> 
<ol><li>admin  user/pass : &quot;admin&quot;, &quot;password&quot;</li> 
<li>power  user/pass : &quot;power&quot;, &quot;password&quot;</li> 
<li>normal user/pass: &quot;user1&quot;, &quot;password&quot;</li></ol> 
<br /><br /> 
<h1>CONFIGURATION</h1> 
<h3>Default / Imported Data</h3> 
<ol><li>All the data that is immediately loaded by the application is imported from either .csv or .ini files located in <b>&lt;root&gt;\src\apps\CommonLibraryNet.Web\Config\Data</b></li> 
<li>The data is imported into the repositories / system only if it doesn&#39;t already exist in the system. This is accomplished by checking for same records by the values of specific fields</li> 
<li>Widgets, Posts, Pages, Parts, Links, Rolls, Events, Menu Entries, are all initially imported from their respective .csv or .ini files</li></ol> 
<br /> 
<h3>Widgets</h3> 
<ol><li>Widgets are defined in <b>&lt;root&gt;\src\apps\CommonLibraryNet.Web\Config\Data\WidgetDefs.csv</b></li> 
<li>Widget Instances are defined in <b>&lt;root&gt;\src\apps\CommonLibraryNet.Web\Config\Data\WidgetInstances.csv</b></li></ol> 
<br /> 
<h3>Config Files</h3> 
<ol><li>Config files are available for different environments ( dev, dev2, qa, prod )</li> 
<li>You can choose the environment to run the app in by changing the variable string <i>ENVIRONMENT</i> = &quot;dev&quot;; in Configure(... ) in Global.asax.cs</li> 
<li>These config files are located in <b>&lt;root&gt;\src\apps\CommonLibraryNet.Web\Config\env\</b></li> 
<li>dev.config, dev2.config, qa.config, prod.config are available</li> 
<li>These config files are inherited to avoid duplication of config settings. e.g. prod inherits from qa, qa inherits from dev2, dev2 inherits from dev.</li></ol> 
<br /><br /> 
<h1>CURRENT LIMITATIONS</h1> 
These are going to be fixed / available in 1 week from the alpha 1 release.<br /> 
<h3>UI</h3> 
<ol><li>calendar chooser</li> 
<li>time chooser</li> 
<li>wysiwyg</li> 
<li>preview of posts / events</li> 
<li>formatting (c#/javascript/css)</li> 
<li>html in body of posts / events</li> 
<li>icons new/edit/copy/remove</li> 
<li>theme changer</li> 
<li>drag / drop widget changer</li></ol> 
<br /> 
<h3>Web</h3> 
<ol><li>trackbacks</li> 
<li>linkbacks</li> 
<li>blogml</li> 
<li>weblog</li> 
<li>akismet</li> 
<li>ajax api</li> 
<li>rest api</li> 
<li>emails / newsletters / subscriptions</li></ol> 
<br /> 
<h3>Miscellaneous</h3> 
<ol><li>abuse / flagging of inappropriate comments</li> 
<li>copy of posts</li> 
<li>localization</li> 
<li>search website</li> 
<li>sitemap</li></ol> 
<br /><br /> 
<h1>NOTES</h1> 
<h3>Authentication</h3> 
Custom Forms Authentication is used. This means:
<ol><li>Asp.Net Membership Providers are NOT used</li> 
<li>A custom &quot;Users&quot; component is used.</li> 
<li>After signing in and validating the user credentials, FormsAuthentication is activated</li> 
<li>The username and roles are persisted in a encrypted cookie</li> 
<li>In Global.asax Application_AuthenticateRequest() handler rebuilds the Context.User ( IPrincipal ) using the cookie information.</li></ol> 
<br /> 
<h3>Miscellaneous</h3> 
1. Tags on posts are not applied immediately. They are queued up and then processing every x number of seconds.<br />2. The repository used for an entity could be anything, an In-Memory, Sql Repository, NHibernated based repository. It&#39;s pluggable.<br />3. Criteria&lt;T&gt; object is used to in Find methods instead of Linq. This is to support possibly using NHibernate<br />4. Inserts / Updates are safe via parameterized queries ( DbParameter usage )<br />5. Stored procs are only used for Getting data by pages <br />6. Finding data by using Criteria doesn&#39;t not use parameterized queries is not that safe for the time being. This will be fixed.<br />7. Entities / Database schema, Sql Repositories can be automatically generated via a &quot;Model generator&quot; see Web.Console and WebModules projects in source.<br /> 
<h3>More Documentation</h3> 
The site uses many of the features from <a href="http://commonlibrarynet.codeplex.com" class="externalLink">http://commonlibrarynet.codeplex.com<span class="externalLinkIcon"></span></a> and as a result, the code base for the application<br />becomes very simple and lightweight, particularly the Entities/Models and ActiveRecord/Repositories.<br /><br />Check the documentation on CommonLibrary.NET for more information.<br /><br /> 
<h3>Source Code - Project Structure</h3> 
<ol><li>ComLib.Web.Lib - Reusable ASP.NET MVC code is placed in this library</li> 
<li>ComLib.Web.Modules - Contains all the code for the web modules/models which include ( Blog, Faq, Tag, Feedback, Event, Page, Part, Profile, etc )</li> 
<li>ComLib.CMS - This is the web project itself that contains the global.asax and all the views.</li></ol> 
<br />
</body>
</html>